package com.minimalist.common.entity.lindi.vo.subsidyapplicationpayrecord;

import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.minimalist.common.config.mybatis.bo.PageReq;
import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Objects;

/**
 * @author 11987
 */
@Schema(name = "林地指标交易平台_补贴申请支付记录查询实体")
public class LindiSubsidyApplicationPayRecordQueryVO extends PageReq implements Serializable{
    @Serial
    private static final long serialVersionUID = 1L;

    @Schema(name = "subsidyPayRecordId", description = "补贴申请支付记录ID", type = "string")
    private Long subsidyPayRecordId;

    @Schema(name = "payType", description = "支付类型", type = "string")
    private String payType;

    @Schema(name = "payMethod", description = "支付方式", type = "string")
    private String payMethod;

    @Schema(name = "payDate", description = "支付时间", type = "string")
    @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
    private LocalDateTime payDate;

    @Schema(name = "startDate", description = "开始时间", type = "string")
    @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
    private LocalDateTime startDate;

    @Schema(name = "endDate", description = "结束时间", type = "string")
    @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
    private LocalDateTime endDate;

    // Constructors
    public LindiSubsidyApplicationPayRecordQueryVO() {
        super();
    }

    public LindiSubsidyApplicationPayRecordQueryVO(Long subsidyPayRecordId, String payType, String payMethod, LocalDateTime payDate, LocalDateTime startDate, LocalDateTime endDate) {
        this.subsidyPayRecordId = subsidyPayRecordId;
        this.payType = payType;
        this.payMethod = payMethod;
        this.payDate = payDate;
        this.startDate = startDate;
        this.endDate = endDate;
    }

    // Getters and Setters
    public Long getSubsidyPayRecordId() {
        return subsidyPayRecordId;
    }

    public void setSubsidyPayRecordId(Long subsidyPayRecordId) {
        this.subsidyPayRecordId = subsidyPayRecordId;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getPayMethod() {
        return payMethod;
    }

    public void setPayMethod(String payMethod) {
        this.payMethod = payMethod;
    }

    public LocalDateTime getPayDate() {
        return payDate;
    }

    public void setPayDate(LocalDateTime payDate) {
        this.payDate = payDate;
    }

    public LocalDateTime getStartDate() {
        return startDate;
    }

    public void setStartDate(LocalDateTime startDate) {
        this.startDate = startDate;
    }

    public LocalDateTime getEndDate() {
        return endDate;
    }

    public void setEndDate(LocalDateTime endDate) {
        this.endDate = endDate;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        LindiSubsidyApplicationPayRecordQueryVO that = (LindiSubsidyApplicationPayRecordQueryVO) o;
        return Objects.equals(subsidyPayRecordId, that.subsidyPayRecordId) &&
               Objects.equals(payType, that.payType) &&
               Objects.equals(payMethod, that.payMethod) &&
               Objects.equals(payDate, that.payDate) &&
               Objects.equals(startDate, that.startDate) &&
               Objects.equals(endDate, that.endDate);
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), subsidyPayRecordId, payType, payMethod, payDate, startDate, endDate);
    }

    @Override
    public String toString() {
        return "LindiSubsidyApplicationPayRecordQueryVO{" +
               "subsidyPayRecordId=" + subsidyPayRecordId +
               ", payType='" + payType + '\'' +
               ", payMethod='" + payMethod + '\'' +
               ", payDate=" + payDate +
               ", startDate=" + startDate +
               ", endDate=" + endDate +
               '}';
    }
}
